package com.java.UDP.multicast_socket;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;

/**
 * UDP协议组播和广播发送数据：相当于客户端，无需建立连接也可发送数据。先运行服务端再运行客户端发生数据，查看服务端控制台数据接收情况
 * 组播指客户端将数据发送给局域网内一组主机，组播IP地址范围为224.0.0.0-239.255.255.255，其中224.0.0.0-224.0.0.225为预留组播地址
 * 广播指客户端将数据发送给局域网内所有主机，广播IP地址为255.255.255.255
 */
public class MulticastSocketSend {
    public static void main(String[] args) throws IOException {
        // 创建对象：默认随机绑定可用端口，可通过构造函数传递端口号
        MulticastSocket multicastSocket = new MulticastSocket();

        // send：发送数据到指定主机的指定端口
        byte[] data = "你好啊！".getBytes();
        InetAddress group = InetAddress.getByName("224.0.0.1");
        InetAddress broadcast = InetAddress.getByName("255.255.255.255");
        multicastSocket.send(new DatagramPacket(data, data.length, broadcast, 8888));

        // close：释放资源
        multicastSocket.close();
    }
}
